library(tidyverse)
library(readr)
chic <- read_csv("ggplot2/ggModify/chicago-nmmaps.csv")
chic <- chic %>%
  mutate(year = substr(date, 1, 4))

# 1. 改变整体的作图风格
#   可以通过使用主题来改变整个图的外观。ggplot2有八个内置主题:
#       theme_bw(), theme_classic(), theme_dark(), theme_gray(), 
#       theme_light(), theme_linedraw(), theme_minimal(), theme_void()

# ggthemes包和几个定制主题放在一起。
library(ggthemes)

# 使用theme_economist()和scale_color_economist()复制《经济学人》杂志中的绘图风格的例子:
ggplot(chic, aes(x = date, y = temp, color = season)) +
  geom_point() +
  labs(x = "Year", y = "Temperature (°F)") +
  ggtitle("Ups and Downs of Chicago's Daily Temperatures") +
  theme_economist() +
  scale_color_economist(name = NULL)

# 另一个例子是Tufte的情节风格，一个基于Edward Tufte的书《定量信息的视觉展示》的最小墨水主题：
library(dplyr)
chic_2000 <- filter(chic, year == 2000)

ggplot(chic_2000, aes(x = temp, y = o3)) +
  geom_point() +
  labs(x = "Temperature (°F)", y = "Ozone") +
  ggtitle("Temperature and Ozone Levels During the Year 2000 in Chicago") +
  theme_tufte()

# 另一个带有现代主题和非默认字体预设的包是Bob Rudis的hrbrthemes包，它有几个浅色和黑色的主题:
ggplot(chic, aes(x = temp, y = o3)) +
  geom_point(aes(color = dewpoint), show.legend = FALSE) +
  labs(x = "Temperature (°F)", y = "Ozone") +
  ggtitle("Temperature and Ozone Levels in Chicago")

# 2. 改变所有文本元素的字体
#   一次性改变所有文本元素的设置非常容易。
#   所有的主题都有一个名为base_family的参数:
g <- ggplot(chic, aes(x = date, y = temp)) +
  geom_point(color = "firebrick") +
  labs(x = "Year", y = "Temperature (°F)",
       title = "Temperatures in Chicago")

g + theme_bw(base_family = "Playfair")

# 2.1 改变所有文本元素的大小
#   theme_*()函数还附带了其他几个base_*参数。
#   如果你仔细看看默认的主题，你会注意到所有元素的大小都是相对于base_size的(rel())。
#   因此，如果你想增加图的可读性，你可以简单地改变base_size:
g + theme_bw(base_size = 20, base_family = "Roboto Condensed")

# 3. 改变所有直线和矩形元素的大小
#   类似地，你可以改变line和rect类型的所有元素的大小:
g + theme_bw(base_line_size = 1, base_rect_size = 1)


# 4. 创建自己的主题
#   如果您想要更改整个会话的主题，您可以使用theme_set(theme_bw())中的theme_set。
#   默认值称为theme_gray(或theme_gray)。
#   如果您想创建自己的自定义主题，可以直接从灰色主题提取代码并进行修改。
#   注意rel()函数改变了相对于base_size的大小：
